package com.syf.kit.core.ds.impl;

import com.syf.kit.cont.RdsDSCont;
import com.syf.kit.enums.DataSourceType;
import com.syf.kit.enums.RDSType;
import org.assertj.core.util.Sets;

import javax.sql.DataSource;
import java.util.Set;

public interface SyfDataSource {

    /**
     * 获取RDS的类型
     */
    RDSType getRDSType();

    /**
     * 获取数据源的类型，是单个数据源，还是多个数据源，还是主从数据源
     */
    DataSourceType getDsType();

    /**
     * 获取默认数据源
     */
    DataSource getDefaultDataSource();

    /**
     * 根据配置的数据源名称，获取数据源
     */
    DataSource getDataSourceByName(String name);

    /**
     * 获取所有数据源的名称
     */
    default Set<String> getDataSourceNameSet() {
        return Sets.set(RdsDSCont.DEFAULT_DS_NAME);
    }
}
